let express = require('express');
let app = express();

var Web3 = require('web3');

// let rpc = 'http://139.162.160.196:8545/';
let rpc = 'http://127.0.0.1:8545/';
let wss = 'wss://127.0.0.1:8546/';

// let wss_options = {
//     timeout: 100,
//     reconnectDelay: 10,
//     reconnect: {
//         auto: true,
//         delay: 10,
//         maxAttempts: 100,
//         onTimeout: true,
//     },
// };

let rpc_options = {
    timeout: 1000,
    keepAlive: true,
};

// let web3s = [
//     web3_rpc,
//     // web3_wss1,
//     // web3_rpc,
//     // web3_rpc1,
//     // web3_rpc2,
//     // web3_rpc3,
//     // web3_rpc4
// ];

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

(async () => {
    let web3 = new Web3(new Web3.providers.WebsocketProvider(wss));
    // let web3 = new Web3(new Web3.providers.HttpProvider(rpc, rpc_options));



    for (let i = 0; i < 100; i++) {

        let getBlockTransactionCount = await web3.eth.getBlockTransactionCount('pending');

        console.log(getBlockTransactionCount);

    }

    web3.eth.getPendingTransactions((error, result) => {
        console.log(result)
    })


    // web3.eth.subscribe('pendingTransactions').on("data", async function (tx) {
    //
    //     console.time(tx);
    //     web3Ws3.eth.getTransaction(tx).then(async transaction => {
    //         console.timeEnd(transaction.hash);
    //     });
    //
    // });

    console.log('success')

    // for (let i = 0; i < 200; i++) {
    //     console.log(`---`)
    //
    //     for (let web3 of web3s) {
    //
    //         let provider = web3.currentProvider;
    //
    //         let url = provider.url;
    //         let host = provider.host;
    //
    //         let xurl;
    //         if (url) {
    //             xurl = url;
    //         }
    //         if (host) {
    //             xurl = host;
    //         }
    //
    //
    //         // for (let j = 0; j < 20; j++) {
    //         //     for (let k = 0; k < 20; k++) {
    //         //         console.time(`${j} ${k} ${xurl} getBlock 延迟`);
    //         //         web3.eth.getBlock('pending').then(async block => {
    //         //             console.timeEnd(`${j} ${k} ${xurl} getBlock 延迟`);
    //         //             await sleep(3000 * Math.floor(Math.random() * 5));
    //         //             console.log(`block ${j} ${k} ${xurl} `);
    //         //         });
    //         //         await sleep(3000 / 20);
    //         //     }
    //         // }
    //
    //         console.time(`${i} ${xurl} getBlock 延迟`);
    //         await web3.eth.getBlock('pending')
    //         console.timeEnd(`${i} ${xurl} getBlock 延迟`);
    //
    //         console.time(`${i} ${xurl} getBlockNumber 延迟`);
    //         await web3.eth.getBlockNumber()
    //         console.timeEnd(`${i} ${xurl} getBlockNumber 延迟`);
    //     }
    //     await sleep(100);
    // }
})();

app.listen(3000);

// start();

